package org.hy.pay.common.core.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.session.SqlSession;
import org.hy.pay.common.core.page.PageBean;
import org.hy.pay.common.core.page.PageParam;
import org.mybatis.spring.SqlSessionTemplate;

public interface BaseDao<T> {
	/**
	 * 单条插入数据
	 * @param entity
	 * @return
	 */
	int insert(T entity);
	/**
	 * 批量插入数据
	 * @param list
	 * @return
	 */
	int insert(List<T> list);
	/**
	 * 根据ID 单条更新数据
	 * @param entity
	 * @return
	 */
	int update(T entity);
	/**
	 * 根据ID 批量修改 数据更新
	 * @param list
	 * @return
	 */
	int update(List<T> list);
	/**
	 * 根据column 字段 批量更新修改
	 * @param paramMap
	 * @return
	 */
	int update(Map<String,Object> paramMap);
	/**
	 * 更加ID 查询
	 * @param id
	 * @return
	 */
	T getById(String id);
	/**
	 * 根据字段查询数据
	 * @param paramMap
	 * @return
	 */
	public T getByColumn(Map<String,Object> paramMap);
	/**
	 * 根据条件查询listBy
	 * @param paramMap
	 * @return
	 */
	public T getBy(Map<String,Object> paramMap);
	/**
	 * 根据条件查询数据
	 * @param paramMap
	 * @return
	 */
	public List<T> listBy(Map<String,Object> paramMap);
	/**
	 * 根据字段查询列表数据
	 * @param paramMap
	 * @return
	 */
	public List<T> listByColumn(Map<String,Object> paramMap);
    /**
     * 根据column 查询记录数
     * @param paramMap
     * @return
     */
	Long getCountByColumn(Map<String,Object> paramMap);
	/**
	 * 根据ID 删除数据
	 * @param id
	 * @return
	 */
	int delete(String id);
	/**
	 * 根据ID 批量删除数据
	 * @param list
	 * @return
	 */
	int delete(List<T> list);
	/**
	 * 根据column 批量删除
	 * @param paramMap
	 * @return
	 */
	int delete(Map<String,Object> paramMap);
	/**
	 * 函数功能: 分页查询数据
	 * @param pageParam
	 * @param paramMap
	 * @return
	 */
	public PageBean listPage(PageParam pageParam, Map<String,Object> paramMap);
	
	/*public SqlSessionTemplate  getSessionTemplate();
	
	public SqlSession getSession();
*/
}
